unicode konfirmacny subor pre socialnu poistovnu (SR:)

Otázka od: Vlko II.

2. 6. 2004 10:42

mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor, problem
je, ze
ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do widechar, do
widestring
pouzivat zo synachar konverziu CharsetConversion(s,CP1250,UCS_2); ale nech
robim
co robim vysledok mi nesedi so vzorovym prikladom. Nerobil to nahodou
niekto kto by
mi vedel poradit?

Vopred dakujem

  Vlko

zadanie prikladam:

Sposob vytvorenia konfirmacneho suboru pre ?Mesacny vykaz poistneho a
davok NP? v XML formate

Format konfirmacneho suboru: textovy subor
Kodova stranka suboru: Win1250
Struktura textoveho suboru:
? kazda informacia tvori samostatny zaznam
? zaznamy su oddelene znakom konca riadku typu Windows (t.j. hexadecimalne
?0a 0d?)

Popis jednotlivych zaznamov:
1. Nazov APV pre mzdovu/personalnu agendu, z ktoreho je XML subor vystupom
2. Verzia APV
3. Nazov zhotovitela APV
4.? n.: kontrolne cislo v dekadickom tvare

Sposob tvorby kontrolnych cisiel:
1. Nacitanie obsahu suboru do pola bajtov v kodovej stranke Unicode.
2. Pre kazdych 100 riadkov sa vytvori sucet vsetkych bajtov vratane tych,
ktore zastupuju koniec riadku, v desiatkovej sustave.
3. Zo zvysnych riadkov, ktorych pocet je mensi ako 100, bude vytvarane
posledne kontrolne cislo.

Priklad:
XML subor s poctom riadkov 1053 bude obsahovat:
? 3 riadky hlavicky,
? riadky s kontrolnymi cislami v pocte zaokruhleneNahor(pocetRiadkov/100),
tu: 11 riadkov
o vsetky kontrolne cisla okrem posledneho (ak pocet riadkov nie je
delitelny 100) budu suctom Unicode hodnot znakov 100 riadkov
o posledna kontrolna cislica bude suctom Unicode hodnot poslednych riadkov
pocetRiadkov modulo 100, tu. sucet z poslednych 53 riadkov.

<spVykazPoistneho>
 <typDoc>MVP00001</typDoc>
 <nazov>Potraviny ? Novak</nazov>
</spVykazPoistneho>

60 + 115 + 112 + 86 + 121 + 107 + 97 + 122 + 80 + 111 + 105 + 115 + 116
+ 110 + 101 + 104 + 111 + 62 + 13 + 10 +
9 + 60 + 116 + 121 + 112 + 68 + 111 + 99 + 62 + 77 + 86 + 80 + 48 + 48
+ 48 + 48 + 49 + 60 + 47 + 116 + 121 + 112 + 68 + 111 + 99 + 62 + 13 + 10 +
9 + 60 + 110 + 97 + 122 + 111 + 118 + 62 + 80 + 111 + 116 + 114 + 97 + 118
+ 105 + 110 + 121 + 32 + 45 + 32 + 78 + 111 + 118 + 225 + 107 + 60 + 47
+ 110 + 97 + 122 + 111 + 118 + 62 + 13 + 10 +
60 + 47 + 115 + 112 + 86 + 121 + 107 + 97 + 122 + 80 + 111 + 105 + 115
+ 116 + 110 + 101 + 104 + 111 + 62 + 13 + 10

kontrolne cislo = 8983

Vzor: XML subor: SPVykaz_200401_2.xml
   Konfirmacny subor: SPVykaz_200401_2_conf_2.txt


--


--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net

Odpovedá: Zbysek Hlinka

2. 6. 2004 10:52

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Vlko II.
> Sent: Wednesday, June 02, 2004 11:32 AM
>
> mam take prekerne zadanie. pre xml subor vytvorit kontrolny
> subor, problem je, ze ma byt v unicode. Skusal som uz vsetko
> mozne, nacitavanie do widechar, do widestring pouzivat zo
> synachar konverziu CharsetConversion(s,CP1250,UCS_2);

A zkousel jsi na zacatek xml dat tohle?
<?xml version="1.0" encoding="unicode"?>

S pozdravem

Zbysek Hlinka
E-mail: hlinka zavin. hlinka.cz
Phone: +420 603 551 282



Odpovedá: Vlko II.

2. 6. 2004 11:07

On Wed, 2 Jun 2004 11:52:17 +0200, Zbysek Hlinka <konference@hlinka.cz>
wrote:

> A zkousel jsi na zacatek xml dat tohle?
> <?xml version="1.0" encoding="unicode"?>

problem je v tom, ze xml ma byt v kodovani win1250, problemovy je prevod z
win1250 do unicode



--


--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net


Odpovedá: Zbysek Hlinka

2. 6. 2004 11:50

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Vlko II.
> Sent: Wednesday, June 02, 2004 11:58 AM
>
> > A zkousel jsi na zacatek xml dat tohle?
> > <?xml version="1.0" encoding="unicode"?>
>
> problem je v tom, ze xml ma byt v kodovani win1250,
> problemovy je prevod z win1250 do unicode

A co treba tohle?
MultiByteToWideChar

S pozdravem

Zbysek Hlinka
E-mail: hlinka zavin. hlinka.cz
Phone: +420 603 551 282


Odpovedá: Petr Vones

2. 6. 2004 12:16

From: "Vlko II." <vlko@zilina.net>
> mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor, problem
> je, ze ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do

Kodovani resi parser/dom. V Delphi je to IXMLDocument, nastav Encoding na
UTF-16 coz je Unicode.

Petr Vones


Odpovedá: Vlko II.

2. 6. 2004 14:03

On Wed, 2 Jun 2004 12:52:25 +0200, Petr Vones <pvones@vol.cz> wrote:

>> mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor,
>> problem
>> je, ze ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do
>
> Kodovani resi parser/dom. V Delphi je to IXMLDocument, nastav Encoding na
> UTF-16 coz je Unicode.

uz to je vyriesene, troska sme sa nepochopili, ten xml subor mal zostat v
kodovani
win 1250 len ten kontrolny subor mal brat hodnoty z unicode, teda bolo
treba previest
win 1250 na unicode (ucs_2) az neskor som zistil, ze chyba bola nie v
algoritme
ale v priklade, ktory bol v kodovani utf8, aj ked dokumentacia pisala, ze
ma byt
win1250, nuz je to statna sprava, tam sa to stava 

v pripade, ze by to niekto na slovensku potreboval dany kod mu poslem na
mail.

vlko


--


--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net

Odpovedá: L?ikola Petr

2. 6. 2004 14:24

no pokud muzu tak bych poprosil o kousek Tveho kodu, zajima me cast prevodu do
unicode.

Dekuji
Petr Sikola

> On Wed, 2 Jun 2004 12:52:25 +-0200, Petr Vones <pvones@vol.cz> wrote:
>
> >> mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor,
> >> problem
> >> je, ze ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do
> >
> > Kodovani resi parser/dom. V Delphi je to IXMLDocument, nastav Encoding na
> > UTF-16 coz je Unicode.
>
> uz to je vyriesene, troska sme sa nepochopili, ten xml subor mal zostat v
> kodovani
> win 1250 len ten kontrolny subor mal brat hodnoty z unicode, teda bolo
> treba previest
> win 1250 na unicode (ucs_2) az neskor som zistil, ze chyba bola nie v
> algoritme
> ale v priklade, ktory bol v kodovani utf8, aj ked dokumentacia pisala, ze
> ma byt
> win1250, nuz je to statna sprava, tam sa to stava 
>
> v pripade, ze by to niekto na slovensku potreboval dany kod mu poslem na
> mail.
>
> vlko
>
>
> --
>
>
> --------------
> mail: vlko_@pobox.sk
> web: http://vlko.zilina.net
>
>


Odpovedá: Vlko II.

2. 6. 2004 14:23

On Wed, 2 Jun 2004 14:46:38 +0200, L?ikola Petr <developer@efg.cz> wrote:

> no pokud muzu tak bych poprosil o kousek Tveho kodu, zajima me cast
> prevodu do unicode.

tak ma napadlo, ze to nie je az take dlhe  som nasiel na webe:

function StringToWideString(const s: AnsiString; codePage: Word):
WideString;
var
   l: integer;
begin
   if s = '' then
     Result := ''
   else
   begin
     l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), - 1,
nil, 0);
     SetLength(Result, l - 1);
     if l > 1 then
       MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]),
         - 1, PWideChar(@Result[1]), l - 1);
   end;
end; { StringToWideString }

a ako kodovu stranku pouzivam CP_THREAD_ACP co by malo byt win1250, teda
predpokladam, ze malo 



--


--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net